/**
 * SysTypeService.java -- 2017-10-18 21:15:13
 * 作者：欧增奇 -- 代码生成器自动生成
 * 联系方式：425752797@qq.com
 * http://www.ouzengqi.com/
 */
package com.ozq.sys.service.inter;

import java.util.List;
import java.util.Map;

import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.transaction.annotation.Transactional;

import com.ozq.common.page.Page;
import com.ozq.sys.dao.entity.SysType;

/**
 * <文章分类表接口> <功能详细描述>
 * 
 * @author 欧增奇
 * @version [V2.0, 2017年10月18日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
@CacheConfig(cacheNames = "sysType", keyGenerator = "kylinKeyGenerator")
public interface SysTypeService
{
    /** ------------------------------------公共-工具------------------------------------ **/
    /**
     * 分页公共实现
     */
    @Cacheable
    Page pageManage(Page page);

    /**
     * 缓存清理
     */
    @CacheEvict(allEntries = true)
    void clearCache();

    /** ------------------------------------公共-业务------------------------------------ **/
    /** --公共-业务-统计-- **/
    /**
     * 统计所有的记录数
     * 
     * @return int
     */
    @Cacheable
    int countAll();

    /**
     * 按照条件精确统计文章分类表
     * 
     * @param sysType
     * @return int
     */
    @Cacheable
    int countBy(SysType sysType);

    /**
     * 按照条件模糊统计文章分类表
     * 
     * @param sysType
     * @return int
     */
    @Cacheable
    int countLike(SysType sysType);

    /** --公共-业务-添加-- **/
    /**
     * 插入文章分类表
     * 
     * @param sysType
     * @return sysType
     */
    @Transactional
    @CacheEvict(allEntries = true)
    SysType add(SysType sysType);

    /**
     * 插入文章分类表集合
     * 
     * @param SysType
     * @return boolean
     */
    @Transactional
    @CacheEvict(allEntries = true)
    boolean addList(List<SysType> sysTypes);

    /**
     * 批量插入文章分类表，当id存在更新这条数据，不存在插入这条数据（注意：会影响所有字段）
     * 
     * @param sysTypes
     * @return boolean
     */
    @Transactional
    @CacheEvict(allEntries = true)
    boolean addUpdateList(List<SysType> sysTypes);

    /** --公共-业务-查询-- **/
    /**
     * 按照文章分类表查询,如果存在id，则用id查询(本方法只会返回一条数据，当查询有1条以上返回null)
     * 
     * @param sysType
     * @return sysType
     */
    @Cacheable
    SysType find(SysType sysType);

    /**
     * 按照id查询文章分类表
     * 
     * @param typeId
     * @return sysType
     */
    @Cacheable
    SysType findById(Integer typeId);

    /**
     * 按照ids查询文章分类表
     * 
     * @param typeIds
     * @return sysType集合
     */
    @Cacheable
    List<SysType> findByIds(List<Integer> typeIds);

    /**
     * 按照条件精确查询文章分类表返回集合方法
     * 
     * @param sysType
     * @return sysType集合
     */
    @Cacheable
    List<SysType> listBy(SysType sysType);

    /**
     * 按照条件模糊查询文章分类表返回集合方法
     * 
     * @param sysType
     * @return sysType集合
     */
    @Cacheable
    List<SysType> listLike(SysType sysType);

    /**
     * 按照分页条件精确查询文章分类表返回集合方法
     * 
     * @param sysType
     * @return sysType集合
     */
    @Cacheable
    List<SysType> listPageBy(Page page, SysType sysType);

    /**
     * 按照分页条件模糊查询文章分类表返回集合方法
     * 
     * @param sysType
     * @return sysType集合
     */
    @Cacheable
    List<SysType> listPageLike(Page page, SysType sysType);

    /** --公共-业务-修改-- **/
    /**
     * 修改文章分类表
     * 
     * @param sysType
     * @return boolean
     */
    @Transactional
    @CacheEvict(allEntries = true)
    boolean update(SysType sysType);

    /**
     * 批量修改文章分类表
     * 
     * @param sysTypes
     * @return boolean
     */
    @Transactional
    @CacheEvict(allEntries = true)
    boolean updateList(List<SysType> sysTypes);

    /** --公共-业务-删除-- **/
    /**
     * 指定id删除
     * 
     * @param typeId
     * @return boolean
     */
    @Transactional
    @CacheEvict(allEntries = true)
    boolean deleteById(Integer typeId);

    /**
     * 批量删除指定ids
     * 
     * @param typeId
     * @return boolean
     */
    @Transactional
    @CacheEvict(allEntries = true)
    boolean deleteByIds(List<Integer> typeIds);

    /**
     * 按照条件精确删除文章分类表
     * 
     * @param sysType
     * @return boolean
     */
    @Transactional
    @CacheEvict(allEntries = true)
    boolean deleteBy(SysType sysType);

    /**
     * 按照条件模糊删除文章分类表
     * 
     * @param sysType
     * @return boolean
     */
    @Transactional
    @CacheEvict(allEntries = true)
    boolean deleteLike(SysType sysType);

    /** --公共-业务-自定义-- **/
    /**
     * 自定义方法
     * 
     * @param sysType
     * @return map集合
     */
    @Cacheable
    List<Map<String, Object>> custom(SysType sysType);
}